/** @format */

import { ObjectId } from 'bson'

export const formatQuery = (query: Record<string, any>) => {
  for (const k in query) {
    // console.log(k, query[k], query[k].constructor.name)
    if (k === '_id') {
      if (typeof query[k] === 'object') {
        if (query[k]?.$in) {
          query[k].$in = query[k].$in.map((v: any) => (v.length === 32 ? v : new ObjectId(v.toString())))
        }
        // query[k] = query[k].length === 32 ? query[k] : new ObjectId(query[k].toString())
      } else {
        query[k] = query[k].length === 32 ? query[k] : new ObjectId(query[k].toString())
      }
    } else {
      query[k] = query[k]?.constructor?.name === 'ObjectId' ? query[k].toString() : query[k]

      if (typeof query[k] === 'object' && query[k]?.$neq) {
        query[k].$ne = query[k]?.$neq
        delete query[k]?.$neq
      }
      // query[k] instanceof ObjectId
    }
  }
  return query
}
